// app.js
import { initPlugins } from './plugins/index.js'
import config from './config.js'
import store from './store/index.js'
import { getInfo } from './api/login.js'

App({
  onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 初始化插件
    initPlugins(this)

    // 设置全局配置
    this.globalData.config = config

    // 检查登录状态
    this.checkLoginStatus()
  },

  // 检查登录状态
  checkLoginStatus() {
    const token = store.getToken()
    if (token) {
      // 验证token有效性
      getInfo().then(res => {
        if (res.code === 200) {
          this.globalData.hasLogin = true
        } else {
          // token无效，清除本地存储
          store.clear()
          this.globalData.hasLogin = false
        }
      }).catch(error => {
        // 请求失败，可能是网络问题或token失效
        store.clear()
        this.globalData.hasLogin = false
      })
    } else {
      this.globalData.hasLogin = false
    }
  },

  // 设置登录状态
  setLoginStatus(status) {
    this.globalData.hasLogin = status
  },

  // 页面切换时检查登录状态
  onShow() {
    // 白名单页面（无需登录即可访问）
    const whiteList = [
      'pages/login/login'
      // 注意：项目中没有register页面，所以移除了相关引用
    ]
    
    // 获取当前页面
    const pages = getCurrentPages()
    if (pages.length > 0) {
      const currentPage = pages[pages.length - 1]
      const route = currentPage.route
      
      // 如果不在白名单中且未登录，跳转到登录页面
      if (!this.globalData.hasLogin && !whiteList.includes(route)) {
        wx.redirectTo({
          url: '/pages/login/login'
        })
      }
    }
  },

  globalData: {
    userInfo: null,
    config: null,
    hasLogin: false // 登录状态
  }
})